$(function () {
    var emp_datagrid = $("#emp_datagrid");
    var emp_dialog = $("#emp_dialog");
    var emp_form = $("#emp_form");

    //给 a链接统一绑定事件
    $("a[data-cmd]").click(function () {
        var methodName = $(this).data("cmd");
        //调用方法
        methodObj[methodName]();
    });

    emp_datagrid.datagrid({
        url: '/employee/query.do',
        fit: true,
        fitColumns: true,
        columns: [[
            {field: 'username', title: '用户名 ', width: 80},
            {field: 'realname', title: '真实姓名', width: 80},
            {field: 'tel', title: '电话', width: 80},
            {field: 'email', title: '邮箱', width: 80},
            {
                field: 'dept',
                title: '部门名称',
                width: 80,
                formatter: function (value) {
                    return value.name
                }
            },
            {field: 'hireDate', title: '入职时间', width: 80, sortable: true},
            {
                field: 'state',
                title: '状态',
                width: 80,
                formatter: function (value) {
                    return value ? '在职' : '<span style="color: red">离职</span>'
                }
            },
            {
                field: 'admin',
                title: '是否管理员',
                width: 80,
                formatter: function (value) {
                    return value ? '是' : '否'
                }
            }
        ]],
        toolbar: '#emp_toolbar',
        singleSelect: true,
        rownumbers: true,
        pagination: true,
        onSelect: function (index, row) {
            //判断员工的状态来显示按钮文字
            if (row.state) {
                $("#state_btn").linkbutton({
                    text: '离职'
                })
            } else {
                $("#state_btn").linkbutton({
                    text: '在职'
                })
            }
        }
    });

    emp_dialog.dialog({
        title: '新增员工',
        width: 350,
        height: 420,
        closed: true,
        resizable: false,
        buttons: [
            {
                text: '保存',
                iconCls: 'icon-save',
                handler: function () {
                    methodObj.save();
                }
            },
            {
                text: '取消',
                iconCls: 'icon-cancel',
                handler: function () {
                    methodObj.cancel();
                }
            }
        ],
        //清空表单数据
        onClose: function () {
            emp_form.form('clear');
        }
    });

    //使用一个对象来统一管理实践的方法
    var methodObj = {
        add: function () {
            //弹出表格窗口
            emp_dialog.dialog("open");

            $("#pwd").show();

            //设置标题
            emp_dialog.dialog('setTitle', '新增员工');
        },
        edit: function () {
            //判断是否选中了数据
            var row = emp_datagrid.datagrid('getSelected');
            if (!row) {
                //如果没有选中 提示框提示信息
                $.messager.alert("温馨提示", "请选中一条数据", "warning");
                return;
            }

            //处理部门数据
            row["dept.id"] = row.dept.id;

            //选中了一条数据 回显表单数据(根据同名匹配原则 row对象中的属性名要与form中name相同才可以回显)
            emp_form.form('load', row);

            //回显角色 通过员工的id查询角色的集合
            $.get("/role/selectByEmployeeId.do", {employeeId: row.id}, function (data) {
                //回显角色下拉框
                $("#role_combobox").combobox('setValues', data);
            });

            //隐藏密码框
            $("#pwd").hide();

            //弹出表格窗口
            emp_dialog.dialog("open");

            //设置标题
            emp_dialog.dialog('setTitle', '编辑员工');
        },
        //改变员工的状态
        changeState: function () {
            var row = emp_datagrid.datagrid('getSelected');
            if (!row) {
                //如果没有选中 提示框提示信息
                $.messager.alert("温馨提示", "请选中一条数据", "warning");
                return;
            }
            //弹出确认框 确认改变状态
            $.messager.confirm('确认', '确认要改变该员工状态', function (r) {
                if (r) {
                    //发送请求到后台
                    $.get("/employee/changeState.do", {id: row.id}, function (data) {
                        if (data.success) {
                            $.messager.alert('温馨提示', '改变成功', 'info', function () {
                                //刷新当前页面
                                emp_datagrid.datagrid('reload');
                            });
                        } else {
                            $.messager.alert('温馨提示', '改变失败', 'error');
                        }
                    })
                }
            })
        },
        //保存操作
        save: function () {
            //提交表单
            emp_form.form('submit', {
                url: '/employee/saveOrUpdate.do',
                onSubmit: function (param) {
                    //获取下拉框的所有的数据
                    var roleIds = $("#role_combobox").combobox('getValues');
                    for (var i = 0; i < roleIds.length; i++) {
                        //添加角色的参数
                        param["roles[" + i + "].id"] = roleIds[i];
                    }
                    //手动调用验证表单的方法
                    return emp_form.form('validate');
                },
                success: function (data) {
                    //转换为json对象
                    data = $.parseJSON(data);
                    if (data.success) {
                        //提示用户操作结果
                        $.messager.alert('温馨提示', '保存成功!', 'info', function () {
                            //关闭弹出框
                            methodObj.cancel();
                            // load 加载和显示第一页的所有行
                            emp_datagrid.datagrid('reload')
                        })
                    } else {
                        $.messager.alert('温馨提示', '保存失败!', 'error')
                    }
                }
            })
        },
        //取消操作
        cancel: function () {
            emp_dialog.dialog('close');
            $("#import_dialog").dialog('close')
        },
        //高级查询操作
        query: function () {
            //获取查询条件的值
            var keyword = $("#keyword").textbox("getValue");
            var beginDate = $("#beginDate").datebox("getValue");
            var endDate = $("#endDate").datebox("getValue");
            var deptId = $("#deptId").combobox("getValue");

            emp_datagrid.datagrid('load', {
                //发送额外的参数
                keyword: keyword,
                beginDate: beginDate,
                endDate: endDate,
                deptId: deptId
            })
        },
        //重置密码操作
        resetPassword: function () {
            var row = emp_datagrid.datagrid('getSelected');
            if (!row) {
                //如果没有选中 提示框提示信息
                $.messager.alert("温馨提示", "请选中一条数据", "warning");
                return;
            }
            //弹出确认框 确认改变状态
            $.messager.confirm('确认', '确认要重置密码', function (r) {
                if (r) {
                    //发送请求到后台
                    $.get("/employee/resetPassword.do", {id: row.id}, function (data) {
                        if (data.success) {
                            $.messager.alert('温馨提示', '重置成功,初始密码为1', 'info', function () {
                                //刷新当前页面
                                emp_datagrid.datagrid('reload');
                            });
                        } else {
                            $.messager.alert('温馨提示', '重置失败', 'error');
                        }
                    })
                }
            })
        },
        //导出文件操作
        exportXls: function () {
            //获取查询条件的值
            var keyword = $("#keyword").textbox("getValue");
            var beginDate = $("#beginDate").datebox("getValue");
            var endDate = $("#endDate").datebox("getValue");
            var deptId = $("#deptId").combobox("getValue");

            var url = "/employee/exportXls.do?"+ "keyword=" + keyword + "&" + "beginDate=" + beginDate +
                "&" + "endDate=" + endDate + "&" + "deptId=" + deptId;
            //打开下载窗口
            window.open(url);
        },
        //到入文件操作
        importXls: function () {
            //上传文件功能
            $("#import_dialog").dialog({
                title: '上传文件',
                width: 350,
                height: 170,
                buttons: [
                    {
                        text: '取消',
                        iconCls: 'icon-cancel',
                        handler: function () {
                            //关闭弹出框
                            methodObj.cancel();
                            // load 加载和显示第一页的所有行
                            emp_datagrid.datagrid('reload')
                        }
                    }
                ]
            })
            $("#import_btn").click(function () {
                $("#import_form").form('submit',{
                    //发送url
                    url: '/employee/importXls.do',
                    success: function (data) {
                        //转换为json对象
                        data = $.parseJSON(data);
                        if (data.success) {
                            $.messager.alert('温馨提示', '上传成功', 'info', function () {
                                //关闭弹出框
                                methodObj.cancel();
                                //刷新当前页面
                                emp_datagrid.datagrid('reload');
                            });
                        } else {
                            $.messager.alert('温馨提示', data.msg, 'error');
                        }
                    }
                })
            });
        }
    }
});
